const obj = {
  date: [1, 3, 5],
  teachers: {
    袁老师: 'mp,flutter',
    翠花老师: 'interview',
    韩老师: 'webpack,perf',
    高老师: 'react',
    夏老师: 'nodejs,wechat,safe',
    罗老师: 'rn',
    盛老师: 'end,project,algorithm,pattern,react-src,manage',
    杨老师: 'vue',
    崔老师: 'test'
  },
  details: [
    {
      title: 'vue01 全家桶原理和实现',
      content: `
          响应式
          计算属性
                `,
      catg: 'vue',
    },
    {
      title: 'vue02 手写vue',
      content: `
        响应式
        dom编程 
              `,
      catg: 'vue',
    },
    {
      title: 'vue03 vue2源码剖析01',
      content: `
        vue初始化流程
        数据响应式       
              `,
      catg: 'vue',
    },
    {
      title: 'vue04 vue2源码剖析02',
      content: `
        异步更新
        虚拟dom+patch算法
            `,
      catg: 'vue',
    },
    {
      title: 'vue05 vue2源码剖析03',
      content: `
        组件化原理
        手写vue2
            `,
      catg: 'vue',
    },
    {
      title: 'vue06 通用组件库开发实战',
      content: `
         组件通信
         组件实例化
              `,
      catg: 'vue',
    },
    {
      title: 'vue07 vue项目最佳实践',
      content: `
         配置策略
         权限管理
         导航菜单生成
         数据封装和模拟
                `,
      catg: 'vue',
    },
    {
      title: 'vue08 vue3源码剖析01',
      content: `
         vue3初始化流程
         自定义渲染器
            `,
      catg: 'vue',
    },
    {
      title: 'vue09 vue3源码剖析02',
      content: `
         异步更新策略
         数据响应式原理                    
              `,
      catg: 'vue',
    },
    {
      title: 'vue10 vue3源码剖析03',
      content: `
         编译器原理
         异步更新策略
         虚拟dom+patch算法
              `,
      catg: 'vue',
    },
    {
      title: 'React01 React组件化',
      content: `
                  1.组件跨层级通信
                  2.设计并实现表单控件
                  3.高阶组件  
                  4.实现弹窗类组件`,
      catg: 'react',
    },
    {
      title: 'React02 Redux、中间件的使用及源码',
      content: `
                1.使用redux
                2.使用redux中间件
                3.实现redux、中间件`,
      catg: 'react',
    },
    {
      title: 'React03 Hooks和react-redux使用及源码',
      content: `
                1.Hooks API
                2.react-redux使用
                3.实现react-redux
                4.react-router使用`,
      catg: 'react',
    },
    {
      title: 'React04 react-router使及源码',
      content: ` 
                1.react-router使用
                2.路由守卫
                3.路由hooks方法使用及实现
                4.实现Router、BrowserRouter、HashRouter、Route、Link、Switch、Redirect等`,
      catg: 'react',
    },
    {
      title: 'React05 企业级最佳实践01',
      content: `
                1.generator
                2.redux-saga
                3.项目搭建`,
      catg: 'react',
    },
    {
      title: 'React06 企业级最佳实践02',
      content: `
              1.umi+dva搭建项目
              2.路由配置
              3.按需加载
              4.umi+dva核心原理解析`,
      catg: 'react',
    },
    {
      title: 'React07 React原理解析01',
      content: `
                1.虚拟DOM
                2.JSX
                3.React核心API查看
                4.实现React.createElement, ReactDom.render, Component`,
      catg: 'react',
    },
    {
      title: 'React08 React原理解析02',
      content: `
                1.协调
                2.diff
                3.fiber结构实现初次渲染`,
      catg: 'react',
    },
    {
      title: 'React09 React原理解析03',
      content: `
                1.Hook原理
                2.fiber结构实现更新
                3.FunctionComponent源码解读`,
      catg: 'react',
    },
    {
      title: 'React10 React原理解析04',
      content: `
                1.React源码中的协调解读与实现
                2.任务调度流程
                3.合成事件
                4.setState的同步与异步
                5.常见组件优化技术总结`,
      catg: 'react',
    },
    {
      title: 'Nodejs01 基础API与CLI',
      content: `
                异步I/O Stream Buffer Http
                手写一个CLI工具
                `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs02 Koa源码',
      content: `
          context上下文
          中间件机制
          router中间件
          静态服务中间件
        `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs03 网络编程',
      content: `
                  socket套接字编程
                  http协议 跨域 反向代理 爬虫 反向代理 bodyparser
                  上传原理
                  websocket
        `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs04 Mysql',
      content: `
                  mysql 
                  sequelize
                  电商sequlize实战
                  `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs05 Mongoose',
      content: `
                  mongo native
                  mongoose
                  零编码Restful
                `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs06 鉴权',
      content: `
                  cookie-session
                  token jwt原理解析
                  扩展Oauth2 与 SSO单点登录
        `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs07 eggjs原理解析',
      content: `
                  实现一个MVC框架
                  约定优于配置 控制器层 服务层 实体层
                  定时器 中间件
        `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs08 eggjs最佳实践',
      content: `
                  swager 接口文档
                  plugin
                  restful服务
                  表单校验
                  jwt鉴权
                  生命周期函数 初始化数据
                  上传upload
        `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs09 手写TS装饰器',
      content: `
                  装饰器与AOP
                  路由装饰器
                  校验装饰器
                  模型装饰器
        `,
      catg: 'nodejs',
    },
    {
      title: 'Nodejs10 部署_Docker_自动化部署',
      content: `
                    部署 cluster模块、PM2、静态服务、反向代理
                    docker基础
                    github webhooks 自动化部署
                    `,
      catg: 'nodejs',
    },
    {
      title: '微信公众号开发',
      content: `
                  ngrok
                  消息接口
                  服务器端接口调用
        `,
      catg: 'wechat',
    },
    {
      title: '前端安全 常见攻击手段攻防演练',
      content: `
                  XSS、CSRF、点击劫持、SQL注入、OS注入、DDOS简介
        `,
      catg: 'safe',
    },
    {
      title: "休息",
      content: `
         休息
             `,

      catg: "rest"
    },
    {
      title: '工程化01',
      content: '工程化01',
      catg: 'webpack',
    },
    {
      title: '工程化02 进阶',
      content: '工程化02',
      catg: 'webpack',
    },
    {
      title: '工程化03',
      content: '工程化03',
      catg: 'webpack',
    },
    {
      title: '工程化04',
      content: '工程化03',
      catg: 'webpack',
    },
    {
      title: '工程化05',
      content: 'webpack源码',
      catg: 'webpack',
    },
    {
      title: "休息",
      content: `
         休息
             `,
      catg: "rest"
    },
    {
      title: '项目课',
      content: `
          项目先导课
          整体架构分析
                    `,
      catg: 'project',
    },
    {
      title: 'React-native01',
      content: 'React-native01',
      catg: 'rn',
    },
    {
      title: "休息",
      content: `
         休息
             `,
      catg: "rest"
    },
    {
      title: 'React-native02',
      content: 'React-native02',
      catg: 'rn',
    },
    {
      title: 'React-native03',
      content: 'React-native03',
      catg: 'rn',
    },
    {
      title: 'React-native04',
      content: 'React-native04',
      catg: 'rn',
    },
    {
      title: '小程序-01：微信原生小程序+云开发',
      content: '微信小程序云开发',
      catg: 'mp',
    },
    {
      title: '小程序-02：Uni-App跨端云开发实战',
      content: '跨端云开发',
      catg: 'mp',
    },
    {
      title: '小程序-03：Taro跨端开发+小程序高频需求实战',
      content: 'Taro跨端开发',
      catg: 'mp',
    },
    {
      title: 'flutter01',
      content: 'flutter实战',
      catg: 'flutter',
    },
    {
      title: 'flutter02',
      content: 'flutter实战',
      catg: 'flutter',
    },
    {
      title: 'flutter03',
      content: 'flutter实战',
      catg: 'flutter',
    },
    {
      title: 'flutter04',
      content: 'flutter实战',
      catg: 'flutter',
    },
    {
      title: '性能分析',
      content: '性能分析',
      catg: 'perf',
    },
    {
      title: '前端视野开阔',
      content: '自动化测试',
      catg: 'test',
    },
    {
      title: '面试',
      content: '面试',
      catg: 'interview',
    },
    {
      title: '前端团队管理',
      content: '转管理的困惑 管理知识体系 微前端优劣势 软件开发理论 ',
      catg: 'manage',
    },
    {
      title: '结课',
      content: '结课',
      catg: 'end',
    },
  ],
}
const catgTeachers = {}
Object.entries(obj.teachers).forEach((val) => {
  const [name, catg] = val
  catg.split(',').forEach((v) => {
    catgTeachers[v] = name
  })
})
obj.details.map((v) => {
  v.teacher = catgTeachers[v.catg]
  return v
})

export default obj
